COMP3151/9154 Foundations of Concurrency
Term 2, 2022

Friday Notes (Week 10)

Table of Contents

1 Notes

These notes are about the 2020 exam, which is available on the Ed forum.

Pretzel vending machine spec:

  □(c ⇒ ◇p)

The Pretzel vending machine
 also satisfies this spec:

  □(p ⇒ ◇c)

Two kinds of transition systems:
- those that we drive
- those that the environment drives
  and hence,
  that the environment can block

- Transition diagrams
    l --b; f--> l'
  (completely absent in this paper)
- Labelled transition systems

  (S,L,→)
  - S is a set of states
  - L is a set of labels
  - → ⊆ S × L × S

  Transitions don't have guards
    nor any side effects.

Earlier in the course,
  the atomic propositions in LTL
  were claims about *states*

Now, they are labels:

  □(c ⇒ ◇p)

Q: why ◇ instead of ◯?
A: just because
   generally, use of ◯ is discouraged
   because it breaks stutter
   invariance

Another LTL formula that would work:

  □(c ⇒ ◇c)

  ^^ a silly formula that RvG would
     want to not hold


Q1 (a):
  Reactive systems interact with an
  environment; closed systems don't

Q1 (b):
  Compositional method proves things
  about open systems.
  LG and AFR only work for
   closed products

Q2 (a):
  □(close ⇒ ◇open)

 (b):
  {open, request}
  {open, request, timeout}
   intuitively:
     the user can block timeout
     by requesting really fast
   OTOH:
     the server could set a
     super short timeout


 σ is a behaviour
  (in the course, a infinite
   sequence of states)
  (today, a possibly finite
    sequence of labels)

 φ is a temporal logic formula

   σ ⊧ φ "σ models φ"
    φ is a true claim about the
      behaviour σ


  P is a program
    (or a transition diagram)
    (or a LTS)

  P ⊧ φ "P models φ"  

   for all behaviours that P has,
   φ is a true claim about that
   behaviour.


   P ⊧B φ "P models φ with blockables B"

  φ is a true statement about:
  - all behaviours allowed by P
  - all partial behaviours allowed by P,
     that can only be extended by actions
     in B

Pretzel system has one behaviour:

  (cp)^ω

When we consider the Pretzel system with
  blockable actions {c}

  (cp)^ω, ε, cp, cpcp, cpcpcp, ...  

  P ⊧{c} □◇c   <-- that's invalid
X neXt      is ◯ (next-state)
F Finally   is ◇ (eventually)
G Globally  is □ (always)

 X((X(enabled(t)) ⇒ F(taken(t)))


Rob augments ⊧ with two things:
- a set of blockable actions
   (where can traces be cut off in the middle)
   where you say which actions are
     environment actions
- a completeness criterion
   (which traces should not be considered)
   where you plug in fairness conditions

*default* completeness criterion
- all maximal traces are considered
  maximal trace: a trace that can't be extended
  this is often called *progress*
  "if something can happen, something
    will happen"

Kripke structures are transition systems
with:
- no labels on the arrows
- a *satisfaction relation* that tells
  you for each state, what's true
  in that state

  Ti = tick.Ti
  A = tick!.ring.A


We consider tick.Ti
to abbreviate Σ_{1}. a_i.P_i, where
  a_1 = tick and P_1 and T_i

 T1 -- tick, {ε} --> T1
__________________________________         _____________________
T1 | T2 -- tick, {L} --> T1 | T2            A -- tick!, {ε} --> ring.A
_____________________________________________________________________
  (T1 | T2) | A -- τ, {L⬝L, R} -- > (T1 | T2) | ring.A

beep ⌣ tick?
beep ⌣ tock?

For CCS:
  two transitions are concurrent if they originate from disjoint components

 tick will always have annotation {L}
 tock will always have annotation {L}
 beep will always have annotation {R}

Therefore: tick and beep are concurrent; tick tock are not.

2022-08-05 Fri 16:47

Announcements RSS